Method and system for use of storage caching with a distributed file system

ABSTRACT

A storage caching method and system manages shared access to real time data files while maintaining data file coherency and consistency in a computer network including a plurality of remote computer workstations and at least one file server. The storage caching system is implemented by storage caches, which are associated with workstations, and a cache server, which is associated with a file server, where the storage caches and the cache server interface with a distributed file system to provide shared access to real time data files by remote workstations.

CROSS REFERENCE TO RELATED APPLICATION

This application claims the benefit of U.S. Provisional Application No.60/440,750 filed Jan. 17, 2003, assigned to the assignee of thisapplication and incorporated by reference herein.

FIELD OF THE INVENTION

The present invention relates generally to managing shared access todata files and, more particularly, to a storage caching protocol whichprovides authorized computer workstations with shared access to realtime data files while maintaining data file consistency and coherence.

BACKGROUND OF THE INVENTION

In modern computer system and networking architectures, a computersystem that is a repository for data files is typically not the computersystem on which processing of the data files is performed. Consequently,a user at a computer workstation associated with a remote site computersystem, such as a laptop computer, networked computer or desktopcomputer, often will desire to access, i.e., view (read) or modify(write), a data file that is stored in an internal memory, on a disk orin network attached storage of a remotely located central data sourcecomputer system. Such remote access of data files is performed over acommunications channel, such as a data bus, a communications network orthe Internet, which typically introduces a delay or latency in thepresentation of the data file at the system accessing the data file. Thelatency is based on the need to transmit data between the systemaccessing the data file and the system that produces or stores the datafile. In addition, the data file is usually accessed in portions orblocks rather than as a continuous stream, which exacerbates the latencybecause each block experiences the channel delay upon transmission.

In order to mitigate the effects of channel delays, most currentcomputer systems that perform distributed file system applications,which provide for shared access to data files, implement some form ofcaching. In caching, a local copy of all or a portion of a data file,which is stored at a central source computer system, is maintained in acache established at a remote system, such as in the local memory of aworkstation associated with the remote system. The workstation can reador write to the cached data file, where the cached data file mirrors allor a portion of the data file stored at the central system. The cachealso stores data that tracks any changes made to the cached data file,which are entered by the workstation and ultimately are to beincorporated into the data file stored at the file server. Thus, withcaching, channel latency can be mitigated and a user of the workstationof the remote system is not aware that the data file is accessed from alocal source rather than a remotely located central source system.

Although caching may reduce latency in certain data file accesscircumstances, if access to a data file which has not yet been stored asa copy (mirrored) in the cache is attempted, the latency associated withretrieving a copy of the data file from the file server, known as acache miss, still exists. To avoid cache misses and consequently improvedistributed file system performance, a caching system often implements aread-ahead technique, known as pre-populating the cache, in which datafiles that will be required for access in the future are stored in thecache.

In a distributed file system that provides for shared access to datafiles among a plurality of remote systems, the caching system that isimplemented needs to maintain cache coherence and cache consistency toavoid different versions of a data file being accessed by differentrespective remote systems. Cache coherence is a guarantee that updatesand the order of the updates to a cached data file are preserved andsafe. Thus, in a coherent distributed file system, there is a guaranteethat (i) a remote system does not delete the cached update data beforethe update data is used to update the corresponding data file stored atthe file server, and (ii) no other system updates the data file in amanner that potentially can compromise the update of the data file untilthe data file at the server has been updated using the update data fromthe cache. Cache consistency is a guarantee that the updates to anopened, cached data file made by a workstation are reflected in thecached data file in a timely fashion.

The properties of cache coherence and cache consistency are equallyimportant when multiple remote systems access the same data file. Inthis circumstance, coherence additionally ensures that updates on anycache corresponding to a data file stored at the file server do notoverride updates by another cache corresponding to the same data file.Cache consistency additionally ensures that updates to the cached datafile made at any cache are, in a timely fashion, incorporated into thecached data file at any other cache which is accessing the same datafile.

Cache consistency and cache coherence are easily maintained where acaching system includes a write-through architecture, which providesthat all updates to the cached data file are immediately transmitted tothe central computer system. This immediate transmission results in animmediate update of the data file stored at the file server of thecentral system. Although such architectures improve the performanceassociated with having multiple caches perform a read access of the datafile from the central system, the latency associated with updating thedata file based on write accesses still exists. Hence, this architecturetypically only performs extremely well for a distributed file systemwhere data file updates are infrequent.

Another caching architecture, known as write-back, evolved from thewrite-through architecture in an attempt to solve the latency problemsof the latter. In a write-back architecture, a cache stores the updatesto the cached data file for a period of time before transmitting(flushing) the cached updates to the central system. This periodicflushing updates the cached data file without significant latency. Thesimplest form of write-back is write-behind architecture, where theupdates to the cached data file are not immediately, in other wordsafter some delay, transmitted to the central source in the same orderthat the updates to the cached data file are stored on the cache. Ascached updates are not immediately available to either the centralsource or other remote systems in write-back caching architectures, sucharchitectures are mostly useful only when a single remote system will beaccessing the data file for reading or writing.

If access to a data file by multiple remote systems is contemplated, thewrite-back caching system often is enhanced with mechanisms that trackupdates performed at all of the caches and also at the central sourcesystem to ensure consistency of data files. These mechanisms typicallysubstantially increase the complexity and cost of the cache, so as tomake such caches impractical in many applications. The performancebenefits, however, are significant, which makes these caches veryattractive for high performance computing implementations, such ascomputer systems connected over computer networks.

In a typical computer system architecture having file sharingcapabilities, a local area computer network (“LAN”) remotely accessesdata files over a distributed file system, such as NFS° (Network FileSystem) for UNIX™ or CIFS® (Common Internet File System) for MicrosoftWindows™ systems. These file systems provide workstations associatedwith remote computer systems with a mechanism to access data filesstored at a file server of a central computer system. In addition, eachremote system utilizes local caching to increase efficiency of access todata files. Typically, the caching is performed at a granularity ofpages of a data file that usually constitute four Kilobyte blocks ofdata. The actual number of pages cached is a function of the memoryavailable for caching in a workstation that is incorporated in orcoupled to a remote system. In addition, these file systems utilize somemeasure of write-back caching to achieve acceptable performance.

Although cache consistency and cache coherence are important propertiesfor a caching system, these properties are often very difficult torealize in a networked computer system having distributed file systemperformance capabilities, especially if the system uses write-backcaching. Thus, many distributed file systems do not completely satisfythe guarantees of cache consistency and coherence. In practicalimplementations, a distributed file system relies on a crucialassumption that sharing of the same data file is rare and, therefore,makes a trade-off between performance and correctness when sharing of adata file does occur. For example, NFS currently is not particularlysuitable for shared access because (i) it has weak consistencyguarantees, namely, modifications to a cached data file for a firstremote system may not be timely reflected at the central system and,thus, would not necessarily be mirrored at another remote systemaccessing the data file from the central system; and (ii) it has nocoherence guarantees. In addition, although CIFS provides excellentconsistency and coherence, shared access is at low performance becausethe consistency and coherence is achieved by utilizing write-through anytime that more than one remote system is accessing any given data file.

In addition to automatic measures for maintaining consistency andcoherence, NFS and CIFS also provide locking mechanisms that allow afile sharing application to control coherence and consistency aspects.In particular, NFS allows sharing applications to voluntarily cooperatewith each other without any operating system control, which is commonlyknown as advisory byte range locking. CIFS provides operating systemcontrolled locking, known as mandatory byte range locking, as well asexplicit file sharing modes, which, for example, permit an applicationto control the manner in which a file is accessed such that no otherapplication can access the file. The file sharing application can usesuch mechanisms to improve the coherence and consistency propertiesprovided by such prior art file distribution systems. For example, anapplication can use byte range locking to provide coherence andconsistency even if the underlying system, e.g., NFS, does not havethese properties.

Further, the performance issues faced by a networked system over a localarea network, where typical latencies are well under a millisecond, arecompounded when file sharing is performed over a wide area network(“WAN”). One prior art system, known as Transarc Andrew File System(AFS), was created to overcome the latency existing in WANs that aregeographically small, such as a WAN of a university campus. In contrastto NFS and CIFS, which use local memory of the remote system, such asmemory of a computer workstation, for storing pages of files, AFS usesan on-disk local file system as a cache for entire files. In AFS, mostoperations occur on the local copy of the file and there is no need toretrieve data from the file server when access to the data file isrequested. As each cached data file is modified and closed, the updatesare transmitted (flushed) to the central system to update thecorresponding data file at the file server, and then such updated datafile is made available for access by other remote sites.

Thus, AFS provides flush on close consistency at file granularity, inother words, updates to a data file are immediately available when thedata file is closed, but not as it is being written. AFS, however,weakens the coherence and consistency guarantees considerably to makeWAN operation feasible. In particular, AFS lacks coherence because itallows multiple remote systems to simultaneously update respectivecached data files, each of which corresponds to a single data file, andprovides that the last remote system that closes the file is the remotesystem that controls the changes to the data file at the server of thecentral system. In other words, the modifications of such last closingremote system supersede the changes apparently being made to the datafile by other remote systems. In addition, the consistency of AFS isweak because modifications are transmitted to the central source onlywhen a remote system closes the file.

Consequently, although AFS is useful for a campus wide sharingapplication, it has multiple disadvantages when implemented in abusiness enterprise environment. For example, AFS must be installed onall computers. In addition, AFS cannot be operated in conjunction withNFS and CIFS distributed file systems or other like systems which areconventional in the prior art. Furthermore, the lack of consistency andcoherence of AFS makes it unsuitable for many enterprise applicationsthat require multiple remote systems to have shared access to a realtime version of a data file.

Therefore, a need exists for a system and method for providing realtime, shared access to data files through use of a distributed filesystem, and where the system and method exploit the benefits of cachingwhile also providing data file coherence and consistency and ease ofinteroperability and interfacing with an existing distributed filesystem.

SUMMARY OF THE INVENTION

In accordance with the present invention, a storage caching protocolsystem interfaces with a distributed file system to provide thatauthorized computer workstations have shared access to real time datafiles stored at a file server. A data file stored at the file server isautomatically updated, in substantially real time, by a cache server toinclude file update data representative of data file modificationsentered at a workstation and incorporated into a corresponding cacheddata file which is stored at a storage cache. Consequently, the cacheserver can respond to an access request for the data file from aworkstation using a real time, updated version of the data file, wherethe real time data file includes all of the data file modificationswhich were entered by workstations that previously accessed the datafile and incorporated into corresponding cached data files respectivelystored at storage caches associated with the individual workstations. Ina preferred embodiment, file update data is transmitted as streamingdata to update the data file stored at the file server or a cached datafile stored at a storage cache and, most preferably, the file updatedata is transmitted in compressed form and optionally generated usingdata differencing techniques.

In a preferred embodiment, the storage caching protocol system includesat least one storage cache and at least one cache server which arecommunicatively interconnected over a communications medium. The cacheserver is associated with a file server containing data files, and thestorage cache is associated with at least one authorized computerworkstation. The cache server transmits a copy of a data file stored atthe file server to the storage cache. The storage cache stores the datafile copy as a cached data file, and automatically transmits to thecache server file update data representative of modifications to thecached data file entered by a workstation associated with the storagecache and incorporated into the cached data file. The cache server usesthe file update data to update the data file stored at the file server,and responds to subsequent access requests for the data file, such asfrom the same or another storage cache or an authorized computerworkstation not associated with a storage cache, utilizing the updatedversion of the data file stored at the file server. In a preferredembodiment, the response to the access request includes server fileupdate data for updating a corresponding cached data file stored at therequesting storage cache.

The inventive storage caching system preferably operates in accordancewith a leasing protocol that manages requests for access to a data fileto ensure consistency and coherence among all remote computer systemsthat share access to a data file through use of a distributed filesystem. Each time that a remote computer system associated with astorage cache desires to access, i.e., to view only (read) or to modify(write), a data file stored at the file server, the storage cacheassociated with the remote system determines if it has an appropriatelease for the data file and, if not, transmits a lease request to thecache server. The cache server grants the lease request if cacheconsistency and cache coherence with any other remote system including astorage cache that can access the data file can be preserved. If thecache server denies a lease request, the remote system can eitherprohibit the requested access or pass the request to the file serverwithout caching the data file, as updates to a cached data file are notallowed. When the request is passed to the file server, the workstationfrom which an access request originated only has a right to view andcannot cache the data file, i.e., has a reader right, as another storagecache continues to have a write lease to the data file. Every time thata workstation associated with the storage cache is granted a readerright, the corresponding cached data file is updated using the data filestored at the file server, and the cached data file cannot be modifiedby the workstation.

In a further preferred embodiment, the cache server decides whether togrant or deny a request for a lease of a data file received from a firststorage cache, based on (i) whether another storage cache already has alease and the type of lease existing, which can be write or read, or(ii) whether the data file is already locked by some other mechanism,such as a mandatory or advisory lock associated with a prior artdistributed file system protocol, such as CIFS and NFS. The leaserequest is processed based on the following criteria: a write leasecannot be granted if a read lease already exists at a second storagecache or the file is already locked for reading by another mechanism;only a pass through reader right can be granted if a write lease alreadyexists at a second storage cache; and an additional read lease can begranted if a read lease already exists at a second storage cache or thefile is only locked for reading. In addition, after a lease is granted,the cache server locks the data file to prevent another application fromlocking the data file in a conflicting fashion. Thus, the cache serverensures that any lease that is granted is compatible with an existinglease or any existing lock on the data file already taken by anothermechanism. If a write lease is granted, the first storage cacheautonomously updates the cached data file, based on data filemodifications entered by an associated workstation, without interventionfrom the cache server. Further, following grant of a lease request or areader right, the cache server and the first storage cache initiallyattend to automatically updating the cached data file, if any, stored atthe first storage cache.

In another preferred embodiment, a storage cache responds to a requestfrom an associated authorized workstation for access to a data filestored at the file server based on the strength of the lease, i.e., readlease or write lease, where a write lease is stronger than or includesfile viewing rights associated with a read lease, if any, that the cacheserver has previously provided to the storage cache. The access requestis granted where the access request, which can be read or write, is of alevel commensurate with that of the existing lease, if any, for thestorage cache. In addition, where the storage cache does not have anexisting lease of sufficient strength to satisfy the access request, itmust first obtain a lease and therefore requests a lease for the datafile from the cache server. The lease request is granted if the cacheserver determines that a lease can be granted or that the requestedaccess does not conflict with an existing lease of another storage cacheas well as any existing locks on the data file. Following a grant of thelease request, the storage cache permits the cached data file to beopened at the workstation for read or write purposes, in accordance withthe access request. If the lease request is denied, the storage cacheinteracts with the cache server to update the cached data file based onthe version of the data file stored at the file server and only allowsread access. The cached data file at the storage cache is automaticallyupdated, as needed, based on interaction between the cache server andthe storage cache. A storage cache typically releases or drops the leaseonly when all workstations associated with the storage cache have closedthe cached data file and all pending updates to the data file, which arereflected in the cached data file, are transmitted from the storagecache to the cache server.

BRIEF DESCRIPTION OF THE DRAWINGS

Other objects and advantages of the present invention will be apparentfrom the following detailed description of the presently preferredembodiments, which description should be considered in conjunction withthe accompanying drawings in which like references indicate similarelements and in which:

FIG. 1 is a system diagram illustrating implementation of a storagecaching protocol in a distributed file system in accordance with thepresent invention.

FIG. 2 is a block diagram of a storage cache in accordance with thepresent invention.

FIG. 3 is a block diagram of a cache server in accordance with thepresent invention.

FIG. 4A is a flow diagram of a method for updating a data file stored ata file server based on the transmission of file update data from astorage cache to a cache server in accordance with the presentinvention.

FIG. 4B is a flow diagram of a method for updating a cached data filestored at a storage cache based on server file update data transmittedby a cache server in accordance with the present invention.

FIG. 5 is a flow diagram of a method for responding to a request for alease from a storage cache in accordance with the present invention.

FIG. 6 is a flow diagram of a method for responding to a request foraccess to a data file received at a storage cache in accordance with thepresent invention.

FIG. 7 is a flow diagram of a method for releasing a lease of a datafile in accordance with the present invention.

FIG. 8 is a system diagram illustrating implementation of a storagecaching protocol in a distributed file system having a plurality of fileservers in accordance with the present invention.

FIG. 9 is a system diagram illustrating implementation of a storagecaching protocol in a distributed file system to provide for data backupin accordance with the present invention.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 is a system diagram of an illustrative computer system network 10which operates in accordance with the present invention of a storagecaching protocol that provides multiple computer systems shared accessto real time data files. The network 10 includes a storage cachingprotocol system 12 that interfaces with a distributed file systemapplication operating at a data center computer system, which is arepository for data files, and a remote site computer system, whichnormally is located remotely from a data center system and is associatedwith a computer workstation that desires to access, i.e., view only(read) or modify (write), data files stored at a file server of a datacenter system. The inventive system 12 includes at least one storagecache, which is coupled to a workstation of an associated remote system,and at least one cache server, which is coupled to a file server of adata center system, where the storage cache and the cache server utilizea communications link, such as a link established over the Internet, totransfer (i) copies of data files that the associated workstationdesires to access, (ii) file update data representative of on any datafile modifications entered by authorized workstations that access thedata file, and (iii) data associated with the operating features of thestorage caching protocol system 12.

In the implementation of the storage caching protocol system 12 in theillustrative network 10 shown in FIG. 1, the system 12 interfaces withremote work group computer systems 16A and 16B and a central work groupdata center computer system 20. The remote system 16A includes computerworkstations 22A and 22B interconnected over a communications channel24A, such as an Ethernet or like medium. Similarly, the remote system16B includes computer workstations 22C and 22D interconnected over acommunications channel 24B. Each of the workstations 22 is part of orconstitutes, for example, a personal computer, a personal digitalassistant, or other like electronic device including a processor andmemory and having communications capabilities. In addition, theworkstations of a remote system, in combination with the Ethernet, forma local access network (“LAN”) and operate in accordance with aconventional prior art distributed file system, such as NFS or CIFS,which provides that a user of a workstation can access data fileslocated remotely from the remote system in which the workstation iscontained.

A communications gateway 26 couples the Ethernet 24 of each of theremote systems 16 to a communications network 28. The network 28, forexample, can be a wide area network (“WAN”), LAN, the Internet or anylike means for providing data communications links betweengeographically disparate locations. The gateway 26, for example, is astandard VPN Internet connection having standard DSL speeds. As wellknown in the art, the gateway 26 provides that data, such as data filesaccessible in accordance with a prior art distributed file system suchas NFS or CIFS, can be transferred between a workstation and a remotelylocated file server. It is noted that although the network 10 of FIG. 1shows the gateway 26 and network 28 as being part of the storage cachingsystem 12, these components, which constitute well known, prior artdevices, do not constitute inventive features although they are requiredfor operation of the storage cache and cache server of the inventivesystem 12, as described in further detail below.

Referring again to FIG. 1, the storage caching system 12 includesstorage caches 30A and 30B which are associated with the remote systems16A and 16B, respectively. Each storage cache 30 is coupled to theEthernet 24 and the gateway 26 of the associated remote system 16. Inaddition, the storage caching system 12 includes a cache server 36. Thecache server 36 is coupled to an associated gateway 26C which is alsocoupled to the network 28. An Ethernet 24C couples the gateway 26C andthe cache server 36 to a file server 38 and workstations 22D and 22Econtained in the data center system 20. The file server 38 is aconventional file storage device, such as a NAS, which is a repositoryfor data files and provides for distribution of stored data files toauthorized workstations in accordance with operation of conventionaldistributed file systems, such as NFS or CIFS, which are implemented atthe authorized workstations of the remote systems 16 and the data center20. For purposes of illustration, it is assumed that all of theworkstations 22 in the remote systems 16 and in the data center 20constitute authorized workstations and operate in accordance with adistributed file system compatible with that of the server 38.

FIG. 2 is a preferred embodiment of the storage cache 30 in accordancewith the present invention. Referring to FIG. 2, the storage cache 30includes the modules of a cache manager 50, a translator 52, a leasingmodule 54, and a local leased file storage 56. The cache manager 50 iscoupled to the translator 52 and is for coupling to a cache server, suchas the cache server 36 as shown in FIG. 1, via gateways and acommunications network. The translator 52 is coupled to the leasingmodule 54 and the local storage 56, and is for coupling to workstationsof an associated remote system via an Ethernet connection. As explainedin detail below, the cache manager 50 controls routing of data files,file update data and data file leasing information to and from the cacheserver 36. The translator 52 stores copies of accessed data files at thestorage 56 as a cached data file, makes the cached data file availablefor reading or writing purposes to an associated workstation thatrequested access to a data file corresponding to the cached data file,and updates the cached data file based on data file modificationsentered by the workstation or update data supplied from the cacheserver. In addition, the translator 52 preferably can generate achecksum representative of a first data file and determine thedifference between another data file and the first data file based onthe checksum using techniques that are well known in the art. Theleasing module 54, through interactions with the cache server 36,determines whether to grant a request for access to a data file from anassociated workstation, where the access request requires that thecached data file is made available to the associated workstation eitherfor read or write purposes. In a preferred embodiment, a storage cacheis associated with every remote computer system that can access a datafile stored at a file server of a data center system over the network28.

FIG. 3 is a preferred embodiment of the cache server 36, in accordancewith the present invention, that manages shared access to data filesstored in the file server by multiple storage caches, such as the caches30A and 30B, and also by workstations, such as the workstations 22E and22F of the data center 20, which are not associated with a storagecache. The cache server is preferably a thin appliance having anarchitecture that makes it compatible and easily integrated with anexisting distributed file system, such as NAS and SAN, implemented at aremote computer system and a data center computer system. See Ser. No.09/766,526, filed Jan. 19, 2001, assigned to the assignee of thisapplication and incorporated by reference herein.

Referring to FIG. 3, the cache server 36 includes the modules of aserver manager 60, a translator 62, a leasing module 64, and a localfile storage 66. The server manager 50 is coupled to the translator 62,the leasing module 64 and the storage 66 and also is for coupling tostorage caches, such as the storage caches 30A and 30B, via the gateway26C and the network 28. The translator 62 is coupled to the storage 66and is for coupling to a file server of an associated data centercomputer system via an Ethernet connection. The translator 62temporarily stores at the storage 66 copies of data files stored at andobtained from the file server 36, and performs processing using thestored data files and update data received from a storage cache togenerate a replacement, updated data file. The translator 62 alsoreplaces a data file stored in the file server 38 with the replacementdata file. In addition, the translator 62 can supply to a workstationassociated with the central system, such as the workstations 22D and22E, a copy of a data file stored at the file server 36 only for viewingpurposes in accordance with the inventive leasing protocol, described infurther detail below. In a preferred embodiment, the translator 62, likethe translator 52, can generate a checksum representative of a firstdata file and determine the difference between another data file and thefirst data file using the checksum. In addition, the leasing module 64,through interactions with the storage caches included in the system 12,determines whether a request for access to a data file from aworkstation associated with a specific storage cache should be grantedor denied.

It is to be understood that each of the modules of each of the storagecache 30 and the cache server 36, which perform data processingoperations in accordance with the present invention, constitutes asoftware module or, alternatively, a hardware module or a combinedhardware/software module. In addition, each of the modules suitablycontains a memory storage area, such as RAM, for storage of data andinstructions for performing processing operations in accordance with thepresent invention. Alternatively, instructions for performing processingoperations can be stored in hardware in one or more of the modules.Further, it is to be understood that, in a preferred embodiment, themodules within each of the cache server 36 and the storage cache 30 canbe combined, as suitable, into composite modules, and that the cacheserver and storage cache can be combined into a single appliance whichcan provide both caching for a workstation and real time updating of thedata files stored at a file server of a central data center computersystem.

In accordance with the present invention, the storage caches and thecache server of the storage caching system 12 provide that a data filestored in a file server of a data center, and available for distributionto authorized workstations via a conventional prior art distributed filesystem, can be accessed for read or write purposes by the workstations,that the workstations experience a minimum of latency when accessing thefile, and that the cached data file supplied to a workstation inresponse to an access request corresponds to a real time version of thedata file. A storage cache of the system 12 stores in the storage 56only a current version of the cached data file corresponding to the datafile that was the subject of an access request, where the single cacheddata file incorporates all of the data file modifications entered by aworkstation associated with the storage cache while the file wasaccessed by the workstation. File update data associated with the cacheddata file is automatically, and preferably at predetermined intervals,generated and then transmitted (flushed) to the cache server. Mostpreferably, the file update data is flushed with sufficient frequency toprovide that a real time, updated version of the data file is stored atthe file server and can be used by the cache server to respond to anaccess request from another storage cache or a workstation notassociated with a storage cache. In a preferred embodiment, the localstorage 56 of the storage cache includes only cached data filescorresponding to recently accessed data files.

FIG. 4A is a high level flow process 100 illustrating data processingoperations performed at a storage cache and a cache server, inaccordance with the present invention, for updating a data file at afile server. For purposes of illustrating the process 100, and also theprocesses described below with reference to FIGS. 4B, 5, 6, and 7,reference is made to the network 10 and operations that the componentsof the storage caching system 12 would perform in connection withrequests for access to a data file from the remote system 16A or 16Bwhere the data file is stored at the file server 36 of the source system20. For highlighting the features of the process 100, it is assumed thatthe storage module 56 of the storage cache 30A does not initiallycontain a cached data file corresponding to a data file that theworkstation 16A seeks to access for write purposes.

Referring to FIGS. 1, 2, 3 and 4A, in step 102, the translator 62communicates with the file server 38 and generates a copy of the datafile that the workstation 16A desires to access. The server manager 60then transmits a copy of the data file to the storage cache 30A via thegateway 26C, the network 28 and the gateway 26A.

In step 104, the cache manager 50 receives the transmitted copy of thedata file from the gateway 26A and stores the file in the storage 56 asa cached data file. In addition, the translator 52 interacts with thedistributed file system of the workstation 16A to provide that theworkstation 16A can open, and enter data file modifications to (write)the cached data file. When the user of the workstation is presented withthe cached data file, in other words, the user is permitted to open thecached data file following a request for access for the correspondingdata file, the user is not aware of the location in the network 10 fromwhich the file was obtained. The user does not know whether he isworking on a local copy of the data file, such as stored at a memory ofthe local remote system or at the storage cache 30A, or a copy of a datafile retrieved from a remote storage location, such as the remotelylocated data center computer system 20. As the user enters data filemodifications at the workstation 16A, the translator 52 monitors themodifications and incorporates these modifications into the cached datafile at the storage 56. In other words, only a current version of thecached data file, which includes all modifications to the cached datafile previously made by any workstation within the remote system 16A, isstored in the storage 56.

Steps 106, 108, 110, 112 and 114 set forth file update operations thatthe storage cache 26A and the cache server 26C automatically perform toupdate the version of the data file stored at the file server 38, basedon the modifications made to the corresponding cached data file storedat the storage cache 26. Based on this automatic updating, the cacheserver can transmit a real time, updated version of the data file inresponse to a request for access to the data file received subsequentlyfrom an authorized workstation other than the workstation 16A, where theworkstation may or may not be associated with a storage cache 30A oranother storage cache that is part of the system 12. In the preferredillustrated embodiment of the process 100, the components of the system12 implement the well known prior art technique of differencing as partof the inventive automatic updating of a data file to minimize potentiallatencies.

Referring again to FIG. 4A, in step 106, the cache manager 50 of thestorage cache 30A transmits a data file transfer request to the cacheserver 36. At the cache server 36, the server manager 60, based onreceipt of this request, causes the translator 62 to generate a checksumfor the data file currently stored at the file server 38 usingtechniques well known in the art. The translator 62 generates thechecksum by retrieving a copy of the data file from the file server 38and storing data needed for checksum processing, such as the data filecopy, in the storage 66, as necessary.

In step 108, the server manager 60 transmits the checksum to the storagecache 30A. In step 110, the cache manager 50 retrieves the cached datafile from the storage 56 and the translator 52 uses the checksum tocompute file update data, which is in the form of difference data. Thedifference data represents differences between the cached data file andthe version of the data file currently stored at the file server andrepresented by the checksum.

In step 112, the cache manager 50 transmits the difference data to thecache server 36. Then in step 114, the translator 62 uses the differencedata to generate an updated, replacement version of the data file. Inparticular, the translator 62 retrieves a copy of the current version ofthe data file, which preferably is stored in the local file storage 66at step 108, and then processes the stored current version of the datafile using the difference data to generate an updated data file. Thetranslator 62 then replaces the data file currently stored at the fileserver 38 with the replacement, updated data file. Thus, when the cacheserver 36 subsequently receives a request for access to the data filetransmitted from another storage cache, such as the storage cache 30, orfrom one of the workstations 22E or 22F in the data center system 20,the cache server 36 uses the updated data file to respond to therequest. Consequently, the subsequent requestor effectively is presentedwith a real time version of the data file, which incorporates previouschanges to the data file based on entries made at the workstation 16A.

In a preferred embodiment, in step 112 the cache manager 50 transmitsthe file update data as streaming data to the cache server 36. In analternative preferred embodiment, the file update data is compressedbefore transmission to the cache server as streaming data to minimizethe amount of data transferred over the network 28, thereby reducingpotential latency.

In a preferred operation of the process 100, the cache server 36continues to update a data file stored in the storage 66 based on fileupdate data transmitted from a storage cache and, once transmission ofall of the file update data is completed and the server cache hasreceived all such transmitted data, the cache server then replaces thedata file stored at the file server 36 with the updated data file.

FIG. 4B is a high level flow process 120 illustrating data processingoperations that a storage cache and cache server perform, in accordancewith the present invention, for updating a cached data file at a storagecache using the corresponding data file stored at the file server. Forpurposes of highlighting the features of the process 120, it is assumedthat the storage cache 30A has received a request for access to a datafile from the workstation 16A, a cached data file corresponding to thedata file is stored at the storage module 56 and the workstation 22A or22B previously accessed the data file for either read or write purposes.By updating the cached data file before it is presented to theworkstation 22A in response to an access request, any updates made tothe data file since the workstation 22A previously accessed the datafile are incorporated into the cached data file. For example, theworkstation 22C may have previously written to a cached data file at thestorage cache 30B, which corresponds to the data file, and file updatedata representative of the modifications made to such cached data filemay have been used to update the data file at the file server 36, asexplained above in connection with the process 100, such that the datafile at the file server 36 is different than the corresponding cacheddata file presently stored at the cache 30A.

Referring to FIG. 4B, in step 122 the cache manager 50, followingreceipt of the access request from the workstation 22A, and where it isassumed for simplicity that such access request would not impactcoherence for the data file in the network 10, automatically transmitsto the cache server 36 a data file transfer request. In response to thefile transfer request, the translator 62 retrieves the data file fromthe file server 36 and the server manager 60 stores the data file in thestorage 66.

In step 124, the translator 52 generates a checksum for thecorresponding cached data file and the cache manager 50 transmits thechecksum to the cache server 36. To compute the checksum, the translator52 retrieves the cached data file from the storage module 56 andperforms well known, prior art checksum processing on the cached datafile.

In step 126, the translator 62 generates server file update data usingthe checksum. The server file update data preferably representsdifferences between the data file currently stored in the file server36, a copy of which was stored in the storage 66 in step 122, and thecurrent version of the cached data file stored at the storage cache 30Aand represented by the checksum.

In step 128, the server manager 60 transmits the server file update datato the storage cache 30A. Then in step 130, the translator 52 uses theserver file update data to generate an updated cached data file whichreplaces the cached data file stored in the storage module 56.Thereafter, the translator 52 uses the cached data file, which has beenupdated based on any other data file modifications made by otherworkstations associated with a storage cache of the system 12, torespond to the access request from the workstation 22A. Thus, userdesired updates to an accessed data file are stored in the form of asingle, current version cached data file at the storage 56 of a storagecache.

Similar to the process 100, the server file update data is preferablytransmitted as streaming data to the storage cache and, in addition, theserver file update data is most preferably compressed beforetransmission as streaming data to the storage cache.

In a preferred embodiment, the process 120 is automatically performedfor a storage cache at predetermined intervals to provide that a cacheddata file is updated before a time that a workstation associated withthe storage cache is expected to request access to the data file. Forexample, in an enterprise implementation of the inventive storagecaching protocol system 12, the process 120 is automatically performedby a storage cache early in the morning, before employees would arriveat work and request access to data files from their workstations. Inanother preferred embodiment where none of the workstations of a remotesystem have accessed a particular data file for longer than apredetermined interval, the process 120 is automatically performed toupdate the corresponding cached data files at the storage cache tominimize latency. In a further preferred embodiment, all data files thatworkstations of a remote system would seek to access are initiallystored at the storage cache associated with the remote system.

Thus, the inventive storage caching protocol system constitutes aninvisible interface between a remote system and a data center systemwhich manages shared access to real time data files. Advantageously, thechanges that a workstation desires to make to a data file are not backedup at a storage cache. The desired changes are represented in the cacheddata file, and file update data which, is derived from the cached datafile, is constantly transmitted to the cache server. The cache server,in turn, uses the file update data to update the data file stored at thefile server of a data center system. Therefore, the remote system or astorage cache does not require a large amount of memory for localstorage of files. Consequently, the installation of the inventive cacheserver in association with a central data center system provides memorysaving benefits throughout the computer network 10 with a minimum ofadministrative overhead, as each of the remote systems associated with astorage cache which operates in conjunction with the cache server has aminimum of local memory storage requirements. This achieves minimalmemory requirement. Unlike prior art file sharing systems, which arecomplete and separate systems, the inventive storage caching system haslow memory requirements, is interoperable with existing distributed filesystem technology and, as discussed in detail below, also provides fornetwork-wide coherence of shared data files when accessed byworkstations. Further, the inventive storage caching protocol performsread and write shared access operations on an entire data file, which ismarkedly different from prior art operating systems, such as used byAFS, NFS and CIFS, each of which primarily performs read and writeoperations using portions (data blocks) of a data file.

Advantageously, the storage caching system 12 can be implemented inconnection with an existing, prior art distributed file system, such asNFS or CIFS, without adding to or modifying software at appliancesalready existing at the remote systems or the data center systems andwithout impacting the existing software architecture. For example, thesystem 12 can appear as a Windows file server to a Windows users and aUnix file server to a Unix users. In addition, in operation, the storagecache and cache server of the system 12 are easily initialized tointerface with workstations and a file server using conventional networkconfiguration information. Further, after initial configuration of astorage cache, the storage cache does not require furtheradministration, backup or management of any kind, such by a user of aworkstation, and can be completely managed, monitored, provisioned andreplicated from the cache server or a remote control center.

In accordance with a preferred aspect of the present invention, thesystem 12 implements a leasing protocol that ensures coherency andconsistency of the real time data files available for shared access byworkstations of the network 10 which operate using an existingdistributed file system. The leasing protocol permits multiple readleases for a data file, where the first read lease for a data file locksthe data file so that a write lease subsequently cannot be granted. Inaddition, following grant of a write lease for a data file, no otherread leases can be granted until the write lease is closed. Further,where a write lease for a data file already exists, there can bemultiple reader rights of the data file. A reader right to a data fileprovides that a workstation, which may or may not be associated with astorage cache, can view the data file as a copy, such as obtaineddirectly from the file server, or in the form of a cached data filewhich is stored at a storage cache.

FIG. 5 is a high level flow process 150 illustrating data processingoperations performed by a cache server and a storage cache, inaccordance with the present invention, for determining whether to granta storage cache's request for a lease of a data file. For purposes ofhighlighting the features of the leasing protocol set forth in thepreferred process 150, it is assumed that a first storage cache, namely,the storage cache 30A, is initiating a lease request for a data file,which is stored at the file server 36, based on an access requestreceived from the workstation 22A. In addition, for simplicity andclarity of description, it is also assumed that a second storage cache,namely, the storage cache 30B, is the only other storage cache in thenetwork 10 that can be granted a lease for a data file. It is to beunderstood, however, the leasing process 150 is also applicable wherethe network 12 includes more than two storage caches and that theleasing process 150 would be performed in connection with each of thestorage caches holding a lease for the data file at issue.

Referring to FIG. 5, in step 152 the leasing module 54 causes the cachemanager 50 of the storage cache 30A to transmit a data file leaserequest to the cache server 36. In step 154, the leasing module 64determines if the storage cache 30B already has a lease for the datafile. If the determination in step 154 is yes, in step 156 the leasingmodule 64 determines if the lease held by the cache 30B conflicts withthe requested lease. Based on the leasing protocol criteria, asdescribed above, a conflict does not exist if the cache 30A leaserequest is read. In this circumstance, the leasing module performs step158 to determine whether the file is already locked for read accessbased on distributed file system, such as CIFS or NFS, operations thatcontrol shared access to the file. If the determination in step 158 isthat the data file is already locked, then in step 160 the leasingmodule 64 determines if the lock conflicts with the requested lease. Aconflict would exist if (i) the lease request is a write lease and theexisting lock is read or write lock, or (ii) if the lease request is aread lease and the existing lock is a write lock.

If the determination in step 160 is that a conflict exists, in step 162the leasing module 64 denies the lease request and provides a readerright to the workstation seeking access to the data file. When readerrights are provided, the storage cache associated with the workstationperforms the process 120 to update the cached data file, if any,corresponding to the data file that was the subject of the lease requesttransmitted by the storage cache 30A.

Referring to steps 158 and 160, if the determination for either of thesesteps is no, then in step 164 the leasing module 62 grants the requestand records in its memory that the storage cache 30A has a lease and thetype of lease and locks the file so that no other workstation attachedto the storage cache 30B can have write access to the data file.

Referring again to step 154, if the determination for this step is no,the leasing module 64 proceeds to step 158.

Referring again to step 156, if there is a conflict, then in step 166the leasing module 64 determines if the requested lease is read. If yes,in step 168 the server manager 60 updates the data file at the server 36based on the cached data file stored at the cache 30B, preferablyperforming steps similar to the steps 108, 110, 112 and 114 of theprocess 100. If step 168 is performed, the cache 30B holds a write leasefor the data file that is the subject of the lease request.

Following step 168, in step 170 the server manager 60 transmits aresponse to the cache manager 50 of the storage cache 30A that the leaserequest was denied and that the workstation can have reader rights tothe data file. As part of the response, the server manager 60 transmitsa copy of the data file to the storage cache 30A, or interacts with thestorage 30A to update a corresponding cached data file stored at thestorage cache 30A, preferably performing steps similar to the steps 124,126, 128 and 130 of the process 120. The translator 52, in turn,supplies the cached data file, only with reader rights, to theworkstation requesting access to the data file.

Referring again to step 166, if the determination is that the requestedlease is not read, in step 172 the leasing module 64 determines whetherthe lease for the data file held by the storage cache 30B is read. Ifyes, the leasing module 64 in step 174 revokes the read lease of thestorage cache 30B, stores such information in its memory for future usein making a leasing decision and transmits data representative of thisaction to the storage cache 30B so that its leasing module can updateits memory and take appropriate action. Based on the revocation of theread lease, the storage cache 30B only can provide a reader right to anassociated workstation that seeks to access the data file. In thecircumstance where the storage cache 30B already has a read lease forthe data file and an associated workstation is reading the file based onthe read lease, the read viewing continues for the workstation and theuser does not realize the changed status from read lease to readerrights. Step 158 is performed following step 174, as described above.

Alternatively, if the determination in step 172 is that the storagecache 30B lease is read, then step 162 is performed as described above.In this outcome, the requested lease was for write access.

FIG. 6 is a high level flow process 180 illustrating data processingoperations performed by a storage cache and a cache server, inaccordance with the present invention, for determining whether or not togrant a request by a workstation associated with a storage cache foraccess to a data file, where the request is for read or write purposes.For purposes of illustration, the workstation 22A is attempting toaccess a data file stored at the file server 36. Referring to FIG. 6, instep 182, the cache manager 50 of the storage cache 30A determines thatthe workstation 22A has made a request for access to a data file whichis stored at the file server 36. In response to the access request, instep 184 the leasing module 54 determines if the storage cache 30Aalready has a sufficiently strong lease for the data file. Table 1 showsthe relationship between a type of access request that has been made andthe existing lease, if any, for a data file held by the storage cache.The entries in Table 1 indicate whether, based on a particular accessrequest, the existing lease, if any, for a data file held by the storagecache is sufficiently strong such that data file consistency andcoherency are preserved among the remote systems associated withrespective storage caches. TABLE 1 EXISTING LEASE Read Write No LeaseACCESS Read Yes Yes No REQUEST Write No Yes No

If the existing lease is sufficiently strong in relation to the accessrequest, in step 186 the translator 52 retrieves the cached data filefrom the storage 56 and transmits the cached data file to theworkstation 22A over the Ethernet 24A. Consequently, a user at theworkstation 22A can open the cached data file for read or writepurposes, depending on the nature of the access request. For example, ifthe access request was write, the user can enter data file modificationsfor the cached data file, and the translator 52 would monitor themodifications, and automatically and on an ongoing basis, update thecached data file stored in the storage module 56 to incorporate suchmodifications.

If the determination in step 184 is that the existing lease is notstrong enough in relation to the access request, in step 188 the leasingmodule 54 causes the cache manager 50 to transmit a new lease request tothe cache server 36. Referring to Table 1, an existing lease is notstrong enough if the intersection of the access request and the existinglease is a NO, e.g., the access request is write and the existing leasefor the data file at the storage cache is read. Based on the new leaserequest, the cache server 36 performs a process that is the same orsubstantially similar to the process 150, as described above, todetermine whether a lease can be granted. After the leasing module 64determines whether and what type of lease can be granted, the servermanager 60 transmits this information to the storage cache 30A.

In step 190, the leasing module 54 receives and processes the responseto the lease request transmitted by the cache server 36 to determinewhether a lease has been granted. If yes, in step 192, the cache manager50 and translator 52 of the storage cache 30A perform a process, such asthe process 120 described above, to update the corresponding cached datafile in the storage module 56. The cache manager 50 then performs step186.

If the determination in step 190 is that a lease has not been granted,in step 194 the leasing module 54 determines whether the access requestwas read. If yes, steps 192 and 186 are performed as described above,except that in step 186 read access to the cached data file is provided.

If the determination in step 194 is no, in step 196 the leasing module54 prevents the cached data file from being accessed by the workstation22A. This outcome ensures data file coherence and consistency throughoutthe network 10. Step 196 is performed where the access request was writeand another read or write lease for the data file existed at anotherstorage cache associated with the distributed file system, such as thestorage cache 30B.

FIG. 7 is a high level flow process 200 illustrating data processingoperations performed by a storage cache and cache server, in accordancewith the present invention, for updating a data file stored at a fileserver after a storage cache that has obtained a lease for the data fileno longer needs to maintain the lease active. For purposes ofhighlighting the features of the process 200, it is assumed that onlythe workstation 22A of the remote system 16A previously obtained read orwrite access to the data file and the workstation 22A closed theaccessed cached data file, which it had been viewing or modifying on itsoperating system and which corresponds to the data file for which thestorage cache 30A holds a write lease or a read lease.

Referring to FIG. 7, in step 202, the cache manager 50 monitors datatransmissions between the translator 52 and the workstation 22A todetermine when the workstation 22A has closed the cached data file.After the cache manager 50 determines that the cached data file has beenclosed, in step 204 the translator 52 determines whether the workstation22A modified the cached data file. If yes, in step 206 the translator206 and the cache manager 50 perform a file update process, preferablyincluding differencing data processing similar to that described in theprocess 100, to update the data file stored at the file server whichcorresponds the cached data file that was closed by the workstation 22A.

Following step 206, the leasing module 54, which also received thetransmission indicating that the cached data file was closed, in step208 causes the cache manager 50 to transmit a release lease signal forthe data file to the cache server 36. Further in step 208, at the cacheserver 36, the leasing module 64, upon receipt of the release leasesignal, resets its memory concerning the data file. If a write lease wasreleased, the reset provides that another storage cache, such as thestorage cache 30B, can obtain write lease access to the data file.

Referring again to step 204, if the determination is that theworkstation 22A did not modify the cached data file while theworkstation had access to the cached data file, then in step 210 theleasing module 54 determines whether the storage cache 30A holds a leasefor the corresponding data file. If yes, which means that the cache 30Ahad a read lease for the data file, the leasing module 54 performs step208. Alternatively, if the storage cache 30A did not have a lease forthe data file, no further action is taken because the workstation 22Athat opened the file was a reader, i.e., could only read the file, andanother storage cache, such as the storage cache 30B, had obtained writeaccess rights for an associated workstation.

Thus, the inventive storage caching system manages data files of adistributed file system to make them available for coherent andconsistent shared real time access by multiple remote systems. The datafiles can be accessed by users, who may be located at different remotelocations, and are presented to the users in the form of a cached datafile or a copy of the data file currently stored at the file server,each of which includes all previous modifications so as to constitute areal time, updated version of the data file. The preferred transmissionof file update data and data files between a storage cache and a cacheserver as compressed, streaming data provides that a user at aworkstation experiences substantially LAN-speed access to a data file,although the data file may be physically stored at a file server locatedremotely from the workstation.

In accordance with a preferred embodiment of the present inventivestorage caching protocol system including a leasing protocol, aworkstation associated with a storage cache can access data files storedat multiple file servers. FIG. 8 is a system diagram of a network 310including a preferred storage caching protocol system 312 which operatesto manage access to shared real time data files which are stored atmultiple file servers and to maintain data file coherence andconsistency in the network 310 in accordance with the present invention.Referring to FIG. 8, the system 312 includes a plurality of cacheservers 336A, 336B and 336C, which are respectively coupled toassociated data center systems 320A, 320B and 320C, and also storagecaches 30A and 30B, which are respectively coupled to the remote systems16A and 16B in the same manner as described above for the network 10.For purposes of illustration, each of the data centers 320 isconstructed and functions in the same or substantially the same manneras the data center 20 in the network 10. For example, the data center320A includes an Ethernet 324A which couples workstations 322A and 322Band a file server 338A to the cache server 336A and a gateway 326A, andthe gateway 326A is coupled to the communications network 28.

Referring to FIG. 8, each of the storage caches 30 can communicate withany of the cache servers 336, which are likely located at differentremote locations, and vice versa. In addition, the cache servers 336 cancommunicate with respective associated file servers 338 for retrievingcopies of and updating data files that are the subject of accessrequests from any of the storage caches 30, in accordance with theinventive storage caching protocol. Advantageously, the inventive cacheserver has a software infrastructure to act as a client for standard LANfile sharing protocols (NFS and CIFS), which makes it readilyconfigurable to retrieve copies of a data file from or replace datafiles stored at any of the file servers 338 in the network 310, whereeach of the file servers 338 can have any operating system format. Inaddition, the cache server can also access files from and replace fileson a local file system using standard filesystem APIs.

In operation of the system 312, when a workstation desires to access adata file for read or write purposes, and the inventive storage cachingsystem correctly multiplexes an access request to the appropriate cacheserver, the location from which a copy the data file is presented to theuser is unknown to the user at the workstation. In other words, a usercan access and operate on a sharable data file without knowing, beingconcerned with or ascertaining which data source system physicallycontains the data file.

In a further preferred embodiment, each storage cache or server cachecan be constructed to operate as both a storage cache and cache server.Thus, a single combination storage cache and cache server appliance canbe associated with a remote computer system or a data center computersystem. The user at a workstation of an associated remote system wouldnot be aware that, in some circumstances, the storage cache communicateswith a cache server that is within the same appliance.

Further, the inventive storage caching protocol system providestremendous flexibility in the allocation and sharing of file server andmemory resources, as storage caches and cache servers can serve assimple building blocks for implementing very sophisticated topologies,such as cliques where every cache/server combination is connected withevery other cache/server combination in the network.

In a further preferred embodiment, the inventive storage caching systemincluding the leasing protocol uses the cached data file stored at astorage cache and being modified by entries by the workstation, theversion of the data file stored at the storage of the cache server orthe data file stored at the file server to update a data file or acached data file and maintain data file coherency and consistency in anetwork in the event of (i) a disconnection of a communication linkestablished between a cache server and a storage cache, (ii) a failureof either the cache server or the storage cache, or (iii) an unexpectedreboot of a workstation. Significantly, additional data for trackingfile update status is not required. FIG. 9 is a system diagram of anetwork 410 including a further preferred embodiment of a storagecaching protocol system 412 which manages shared access to real timedata files while maintaining data file coherence and consistency andalso backing up data files in accordance with the present invention.Referring to FIG. 9, the system 412 includes cache servers 436A and436B, which are respectively coupled to associated data center systems420A and 420B, and a storage cache 30A which is coupled to the remotesystem 16A in the same manner as in the network 10. For purposes ofillustration, each of the data center systems 420 is constructed andoperates in substantially the same manner as the data center 20 of thenetwork 10. To highlight the back-up protocol features, it is assumedthat a communications link between the storage cache 30A and the cacheserver 436A has been established for transmitting file update data tothe cache server 436 based on modifications being made to a cached datafile at the storage cache 30A, where the cached data file corresponds toa data file stored at the file server 438A, and where the file server438A, which is a primary data file storage facility for the system 410and the file server 438B is the back-up storage facility.

Referring to FIG. 9, the backing-up of data files in accordance with thepresent invention is initiated when the cache manager 50 of the storagecache 30A detects, for example, a network communication failure at thegateway 26. In turn, the cache manager 50 automatically and periodicallyattempts to reestablish a communications link to the cache server 436A.The storage cache 30A also continues to operate without interruption,i.e., continues to monitor modifications to the cached data file enteredby a workstation and stores only the current version of the cached datafile, incorporating the modifications, in the storage 56.

Further, the cache manager 50 simultaneously attempts to establish acommunications link with a back-up data center, such as the data center420B, via the cache server 436B, as the cache servers 436A and 436B havedifferent and unique IP routing addresses. If this back-up link can beestablished, the storage cache 30A proceeds to perform the process 100for updating a back-up copy of the data file stored at the file server420B. In other words, the storage cache 30A continues the process ofupdating of the data file at the cache server 436B at the point wherethe disconnection to the cache server 436A occurred, assuming the datacenters are mirrored.

When a connection is re-established to the cache server 436A following adisconnection, the storage cache 30A resumes the process for updatingthe data file by performing, for example, the steps 106, 108, 110, 112and 114 of the process 100. In other words, a checksum representing theversion of the data file existing at the cache server 436A or the fileserver 438A at the time the disconnection occurred is used to computethe difference data in step 110. Therefore, the storage cache 30Aeffectively always maintains the file update data, because only acurrent version of the cached data file is stored and this currentcached data file is used to update the version of the data file at thefile server based on the checksum transmitted from the cache server.Thus, as the cached data file continues to be updated and is used toupdate the data file currently stored at the file server, the storagecaching protocol system advantageously provides that the exact status ofupdating of the data file prior to the disconnection need not be trackedor known.

Consequently, the storage cache can interact with multiple cache seversand easily can establish a communications link with the cache server ofa back-up data center, should a communications link to the cache serverof the primary data center fail. The end user at a workstation, however,does not experience or realize the disruption to the communications linkwhen the primary data center fails, while attempts are made tore-establish a link to the primary data center or to a new link to theback-up data center and when the link is finally re-established to theprimary data center. The previous state of the data file isautomatically restored from the memory in a storage cache or cacheserver to ensure that coherency is always maintained and pendingwrite-back data is not lost in the case of reboots or system restarts.

In a preferred embodiment of the inventive storage caching systemincluding the leasing protocol, a combination of streaming (forread-ahead), compression and differencing for better channel utilizationis performed to make a cache hit extremely likely, enable substantialwrite behind and make a cache miss as efficient as possible.

In a further preferred embodiment, the storage cache can attempt toestablish communication links at multiple IP addresses for the same datacenter on different carriers when a network failure is experienced.

In another preferred embodiment, after a failure occurs at a storagecache, the failed storage cache is simply replaced and the new storagecache promptly establishes a connection with the cache server at theremote data center and immediately resumes caching and updating inaccordance with the processes 100 and 120.

Although preferred embodiments of the present invention have beendescribed and illustrated, it will be apparent to those skilled in theart that various modifications may be made without departing from theprinciples of the invention.

1-22. (canceled)
 23. A method for managing shared access to data filesstored in a file server by a plurality of authorized computerworkstations, the method comprising: receiving, at a first storagecache, a copy of a data file retrieved from the file server by a cacheserver for reading or updating, wherein the first storage cache isoperative to associate with a plurality of first authorized computerworkstations and store the copy of the data file as a cached data file;at the first storage cache, incorporating data file modificationsentered by any of the first workstations into the cached data file asthe modifications are entered, such that the cached data file is acurrent version; automatically transmitting file update data from thefirst storage cache to the cache server, wherein the file update data isa function of the modifications incorporated into the cached data filewhich make the cached data file the current version.
 24. The method ofclaim 23, wherein the file update data is transmitted as streaming datato the cache server.
 25. The method of claim 23, further comprising:compressing the file update data prior to transmission to the cacheserver.
 26. The method of claim 23, wherein the file update dataincludes difference data, wherein the difference data represents thedifference between the cache data file at the first storage cache andthe version of the data file currently stored at the file server or thecache server.
 27. The method of claim 23, wherein the cache serverincludes a plurality of cache servers and wherein a replacement versionof the data file is generated at least one of the cache servers.
 28. Themethod of claim 27, wherein when a communications connection between afirst of the cache servers and the first storage cache fails, the firststorage cache automatically attempts to establish a communicationsconnection with at least one of the first cache server and a second ofthe cache servers.
 29. The method of claim 23, wherein the file updatedata is automatically transmitted to the cache server at predeterminedintervals.
 30. The method of claim 23 further comprising receiving anaccess request for the data file from one of the first workstations; andtransmitting a message to the cache server operative to cause the cacheserver to retrieve the data file from the file server.
 31. The method ofclaim 23 further comprising transmitting to the cache server a filetransfer request identifying the data file; receiving at the storagecache a checksum corresponding to the data file stored in the fileserver; and computing, using the checksum, the file update datarepresenting one or more differences between the cached data file andthe data file stored at the file server represented by checksum. 32.Logic for managing shared access to data files stored in a file serverby a plurality of authorized computer workstations, the logic encoded inone or more media for execution and when executed operable to: receive,at a first storage cache, a copy of a data file retrieved from the fileserver by a cache server for reading or updating, associate with aplurality of first authorized computer workstations, store the copy ofthe data file, at the first storage cache, as a cached data file;incorporate, at the first storage cache, data file modifications enteredby any of the first workstations into the cached data file as themodifications are entered, such that the cached data file is a currentversion; automatically transmit file update data from the first storagecache to the cache server, wherein the file update data is a function ofthe modifications incorporated into the cached data file which make thecached data file the current version.
 33. The logic of claim 32, whereinthe file update data is transmitted as streaming data to the cacheserver.
 34. The logic of claim 32, wherein the logic is further operableto compress the file update data prior to transmission to the cacheserver.
 35. The logic of claim 32, wherein the file update data includesdifference data, wherein the difference data represents the differencebetween the cache data file at the first storage cache and the versionof the data file currently stored at the file server or the cacheserver.
 36. The logic of claim 32, wherein the file update data isautomatically transmitted to the cache server at predeterminedintervals.
 37. The logic of claim 32, wherein the logic is furtheroperable to receive an access request for the data file from one of thefirst workstations; and transmit a message to the cache server operativeto cause the cache server to retrieve the data file from the fileserver.
 38. The logic of claim 32, wherein the logic is further operableto transmit to the cache server a file transfer request identifying thedata file; receive at the storage cache a checksum corresponding to thedata file stored in the file server; and compute, using the checksum,the file update data representing one or more differences between thecached data file and the data file stored at the file server representedby checksum.
 39. A method for managing shared access to data filesstored in a file server by a plurality of authorized computerworkstations, the method comprising: receiving, at a first storagecache, file update data from a cache server in response to a workstationrequest for access to a data file which is stored at a file serverassociated with the cache server, wherein the first storage cache isoperative to associate with a plurality of first authorizedworkstations, and wherein the file update data is a function ofdifferences between the data file as currently stored at the file serveror the cache server and a cached data file stored at the first storagecache and corresponding to the data file; incorporating the file updatedata into the cached data file at the first storage cache such that thecached data file is updated to be the same as the data file currentlystored at the file server or the cache server; at the first storagecache, incorporating data file modifications entered by any of the firstworkstations into the cached data file as the modifications are entered,such that the cached data file is a current version; and automaticallytransmitting file update data from the first storage cache to the cacheserver, wherein the file update data is a function of the modificationsincorporated into the cached data file which make the cached data filethe current version.
 40. The method of claim 39, wherein the file updatedata is received as streaming data at the first storage cache.
 41. Themethod of claim 39, wherein the file update data is compressed.
 42. Themethod of claim 39, wherein the automatically transmitting step isperformed at predetermined intervals.
 43. The method of claim 39,further comprising receiving an access request identifying a data filestored as a cached data file at the storage cache; and transmitting achecksum representing the cached data file to the cache server; whereinthe file update data represents one or more differences between the datafile stored at the file server and the cached data file storedrepresented by checksum.
 44. The method according to claim 39 furthercomprising receiving, at a storage cache, an access request from aworkstation identifying a data file stored at a file server;conditionally transmitting a least request from the storage cache to acache server, if the storage cache does not have an appropriate existinglease to the data file; if the lease request is granted, then performingthe receiving step; if the lease request is denied, then performing adistributed differencing process with the cache server to update thecached data file at the storage cache, and allowing the workstationaccess to the cached data file.
 45. Logic for managing shared access todata files stored in a file server by a plurality of authorized computerworkstations, the logic encoded in one or more media for execution andwhen executed operable to: establish a communications connection with acache server, associate with a plurality of workstations and incorporatedata file modifications entered by any of the corresponding associatedworkstations into a cached data file as the modifications are entered,such that the cached data file is a current version; automaticallytransmit file update data to the cache server, wherein the file updatedata is a function of the modifications incorporated into the cacheddata file which make the cached data file the current version, controlwhether a request for access to a data file from an associatedworkstation should be granted or denied, wherein the access request is arequest to read or write a data file stored at the file server, andwherein, following receipt of the request, the logic is operable to:determine a lease condition for the data file existing at the storagecache, wherein the lease condition is one of read, write and no lease;grant the request if the request is read and the existing lease is reador write, or if the request is write and the lease condition is write;request a new lease from the cache server if the request is read and thelease condition is no lease, or if the request is write and the leasecondition is read or no lease, and automatically update the cached datafile at the storage cache based on the current version of the data filestored at the file server, if a lease is granted or the request is aread.
 46. The logic of claim 45, wherein the logic is operable to, whena cached data file corresponding to a data file stored at the fileserver is no longer opened at a workstation, determine whether thecached data file copy was modified based on entries made by theworkstation while the cached data file was open; if the data file copywas modified, automatically transmit file update data to the cacheserver; and release any lease for the data file.
 47. A method formanaging shared access to data files stored in a file server by aplurality of authorized computer workstations, the method comprising:supplying to a first storage cache a copy of a data file retrieved fromthe file server by a cache server for reading or updating, wherein thefirst storage cache is operative to associate with a plurality of firstauthorized computer workstations, store the copy of the data file as acached data file, and incorporate data file modifications entered by anyof the first workstations into the cached data file as the modificationsare entered, such that the cached data file is a current version;receiving file update data automatically transmitted from the firststorage cache to the cache server, wherein the file update data is afunction of the modifications incorporated into the cached data filewhich make the cached data file the current version; and at the cacheserver, generating a replacement version of the data file stored at thefile server based on the file update data.
 48. The method of claim 47further comprising: at the cache server, if the file is accessed forupdating by the first storage cache, protecting the data file stored atthe file server from updates from other storage caches until all fileupdate data from the first storage cache has been incorporated into thereplacement version of the data file and the replacement version hasreplaced the data file stored at the file server.
 49. The method ofclaim 48, wherein the protecting comprises protecting the data filestored at the file server from updates from other storage caches whilethe file update data from the first storage cache is transmitted to thecache server.
 50. The method of claim 47 further comprising: replacingthe data file stored at the file server with the replacement version ofthe data file; and responding to a request for access to the data filesubsequently transmitted to the cache server from at least one of asecond storage cache and an authorized computer workstation using thereplacement version of the data file.
 51. The method of claim 47,wherein the file update data is transmitted as streaming data to thecache server.
 52. The method of claim 47, wherein the file update datatransmitted to the cache server is compressed.
 53. The method of claim47, wherein the file update data includes difference data, wherein thedifference data represents the difference between the cached data fileat the first storage cache and the version of the data file currentlystored at the file server or the cache server.
 54. The method of claim47, wherein the file update data is automatically transmitted to thecache server at predetermined intervals.
 55. Logic for managing sharedaccess to data files stored in a file server by a plurality ofauthorized computer workstations, the logic encoded in one or more mediafor execution and when executed operable to: supply to a first storagecache a copy of a data file retrieved from the file server by a cacheserver for reading or updating, wherein the first storage cache isoperative to associate with a plurality of first authorized computerworkstations, store the copy of the data file as a cached data file, andincorporate data file modifications entered by any of the firstworkstations into the cached data file as the modifications are entered,such that the cached data file is a current version; receive file updatedata automatically transmitted from the first storage cache to the cacheserver, wherein the file update data is a function of the modificationsincorporated into the cached data file which make the cached data filethe current version; and at the cache server, generate a replacementversion of the data file stored at the file server based on the fileupdate data.
 56. Logic for managing shared access to data files storedin a file server by a plurality of authorized computer workstations, thelogic encoded in one or more media for execution and when executedoperable to: associate with a file server and one or more storagecaches, wherein each of the storage caches is operative to associatewith a plurality of workstations and incorporate data file modificationsentered by any of the corresponding associated workstations into acached data file as the modifications are entered, such that the cacheddata file is a current version; receive file update data automaticallytransmitted by one of more storage caches, wherein the file update datais a function of the modifications incorporated into the cached datafile at the storage cache which make the cached data file the currentversion; and wherein logic includes leasing logic, wherein the leasinglogic is operable to decide whether to grant or deny a request for alease for a data file received from a first of the storage caches basedon whether, and what type of, lease already exists for the data file orwhether the data file is already locked, wherein the decision is made inaccordance with criteria that a write lease cannot be granted if a readlease already exists, only a reader right can be granted if a writelease already exists and an additional read lease can be granted if aread lease already exists; and automatically update the cached data fileat the first storage cache if a reader right or a read lease is granted.